home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / intuisup.lha / Intuisup / source.lha / Gadgets / gadgets_test.c next >
C/C++ Source or Header  |  1992-09-16  |  22KB  |  654 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: gadgets_test.c
  6.  *    Created ..: Thursday 19-Dec-91 20:52:59
  7.  *    Revision .: 3
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    16-Sep-92   Torsten Jürgeleit      now with RMB can mouse pointer be
  12.  *                       turned on/off (busy pointer)
  13.  *    06-Aug-92   Torsten Jürgeleit      list view gadget with flag
  14.  *                       GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR
  15.  *    11-Jul-92   Torsten Jürgeleit      now get pointer to console device
  16.  *    19-Dec-91   Torsten Jürgeleit      Created this file!
  17.  *
  18.  * $Revision Header ********************************************************/
  19.  
  20.     /* Includes */
  21.  
  22. #include <exec/types.h>
  23. #include <exec/memory.h>
  24. #include <graphics/gfxbase.h>
  25. #include <graphics/text.h>
  26. #include <intuition/intuition.h>
  27. #ifdef AZTEC_C
  28. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  29. #endif
  30. #include <libraries/memwatch.h>   /* header file for memory debug link library (Fish 240) - AFTER functions.h */
  31. #include "/render/render.h"
  32. #include "/texts/texts.h"
  33. #include "/pointer/pointer.h"
  34. #include "gadgets.h"
  35.  
  36.     /* Defines */
  37.  
  38. #define WINDOW_WIDTH        600
  39. #define WINDOW_HEIGHT        180
  40. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL | MOUSEBUTTONS)
  41. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
  42. #define WINDOW_TITLE        (UBYTE *)" Gadgets test "
  43.  
  44. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  45. #define OPEN_WINDOW_FLAGS    OPEN_WINDOW_FLAG_CENTER_SCREEN
  46.  
  47. #define MESSAGE_LEFT_EDGE    0
  48. #define MESSAGE_TOP_EDGE    (WINDOW_HEIGHT - MESSAGE_HEIGHT - 10)
  49. #define MESSAGE_WIDTH        WINDOW_WIDTH
  50. #define MESSAGE_HEIGHT        8
  51. #define MESSAGE_TEXT1        "Gadget %d text %s"
  52. #define MESSAGE_TEXT2        "Gadget %d value %ld"
  53. #define MESSAGE_TEXT_ATTR    &topaz80_attr
  54.  
  55.     /* Globals */
  56.  
  57. struct IntuitionBase  *IntuitionBase;
  58. struct GfxBase        *GfxBase;
  59. struct Library        *DiskfontBase;
  60. struct Library        *LayersBase;
  61. struct Device         *ConsoleDevice;
  62.  
  63.     /* Statics */
  64.  
  65. STATIC struct NewWindow  test_new_window = {
  66.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 1, WINDOW_IDCMP, WINDOW_FLAGS,
  67.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  68. };
  69. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  70.                            FS_NORMAL, FPF_ROMFONT },
  71.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  72.                            FS_NORMAL, FPF_ROMFONT };
  73.     /* Defines for test gadgets */
  74.  
  75. #define TEST_GADGET_BUTTON        0
  76. #define TEST_GADGET_BUTTON_IMAGE    1
  77. #define TEST_GADGET_CHECK        2
  78. #define TEST_GADGET_MX            3
  79. #define TEST_GADGET_STRING        4
  80. #define TEST_GADGET_INTEGER        5
  81. #define TEST_GADGET_SLIDER_HORIZ    6
  82. #define TEST_GADGET_SLIDER_VERT        7
  83. #define TEST_GADGET_SCROLLER_HORIZ    8
  84. #define TEST_GADGET_SCROLLER_VERT    9
  85. #define TEST_GADGET_CYCLE        10
  86. #define TEST_GADGET_COUNT        11
  87. #define TEST_GADGET_LISTVIEW        12
  88. #define TEST_GADGET_PALETTE        13
  89.  
  90. #define TEST_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  91. #define TEST_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  92. #define TEST_GADGET1_LEFT_EDGE        20
  93. #define TEST_GADGET1_TOP_EDGE        10
  94. #define TEST_GADGET1_WIDTH        ((6 + 2) * 10)
  95. #define TEST_GADGET1_HEIGHT        19
  96. #define TEST_GADGET1_TEXT        "_Button"
  97. #define TEST_GADGET1_TEXT_ATTR        &topaz60_attr
  98.  
  99. #define TEST_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  100. #define TEST_GADGET2_FLAGS        (GADGET_DATA_FLAG_BUTTON_TOGGLE | GADGET_DATA_FLAG_BUTTON_IMAGE | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  101. #define TEST_GADGET2_LEFT_EDGE        120
  102. #define TEST_GADGET2_TOP_EDGE        15
  103. #define TEST_GADGET2_WIDTH        16
  104. #define TEST_GADGET2_HEIGHT        8
  105. #define TEST_GADGET2_TEXT        "_Image"
  106. #define TEST_GADGET2_TEXT_ATTR        &topaz60_attr
  107. #define TEST_GADGET2_NORMAL_RENDER    NULL    /* (LONG)&image1 */
  108. #define TEST_GADGET2_SELECT_RENDER    (BYTE *)&image2
  109.  
  110. #define TEST_GADGET3_TYPE        GADGET_DATA_TYPE_CHECK
  111. #define TEST_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  112. #define TEST_GADGET3_LEFT_EDGE        20
  113. #define TEST_GADGET3_TOP_EDGE        33
  114. #define TEST_GADGET3_WIDTH        0
  115. #define TEST_GADGET3_HEIGHT        0
  116. #define TEST_GADGET3_TEXT        "_Check gadget"
  117. #define TEST_GADGET3_TEXT_ATTR        &topaz60_attr
  118. #define TEST_GADGET3_CHECK_STATE    1
  119.  
  120. #define TEST_GADGET4_TYPE        GADGET_DATA_TYPE_MX
  121. #define TEST_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  122. #define TEST_GADGET4_LEFT_EDGE        20
  123. #define TEST_GADGET4_TOP_EDGE        60
  124. #define TEST_GADGET4_WIDTH        0
  125. #define TEST_GADGET4_HEIGHT        0
  126. #define TEST_GADGET4_TEXT        "Mutual e_xclude gadget"
  127. #define TEST_GADGET4_TEXT_ATTR        &topaz60_attr
  128. #define TEST_GADGET4_SPACING        2
  129. #define TEST_GADGET4_ACTIVE        1
  130. #define TEST_GADGET4_TEXT_ARRAY        &mx_array[0]
  131.  
  132. #define TEST_GADGET5_TYPE        GADGET_DATA_TYPE_STRING
  133. #define TEST_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
  134. #define TEST_GADGET5_LEFT_EDGE        20
  135. #define TEST_GADGET5_TOP_EDGE        103
  136. #define TEST_GADGET5_WIDTH        68
  137. #define TEST_GADGET5_HEIGHT        0
  138. #define TEST_GADGET5_TEXT        "_String gadget"
  139. #define TEST_GADGET5_TEXT_ATTR        &topaz60_attr
  140. #define TEST_GADGET5_INPUT_LEN        10
  141. #define TEST_GADGET5_AUTO_ACTIVATE    ((LONG)TEST_GADGET_INTEGER << 16 | TEST_GADGET_INTEGER)
  142. #define TEST_GADGET5_INPUT_DEFAULT    "Test"
  143.  
  144. #define TEST_GADGET6_TYPE        GADGET_DATA_TYPE_INTEGER
  145. #define TEST_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  146. #define TEST_GADGET6_LEFT_EDGE        (20 + 14 * 10 + 8)
  147. #define TEST_GADGET6_TOP_EDGE        118
  148. #define TEST_GADGET6_WIDTH        68
  149. #define TEST_GADGET6_HEIGHT        0
  150. #define TEST_GADGET6_TEXT        "I_nteger gadget"
  151. #define TEST_GADGET6_TEXT_ATTR        &topaz60_attr
  152. #define TEST_GADGET6_INPUT_LEN        10
  153. #define TEST_GADGET6_AUTO_ACTIVATE    ((LONG)TEST_GADGET_STRING << 16 | TEST_GADGET_STRING)
  154. #define TEST_GADGET6_INPUT_DEFAULT    (BYTE *)123
  155.  
  156. #define TEST_GADGET7_TYPE        GADGET_DATA_TYPE_SLIDER
  157. #define TEST_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  158. #define TEST_GADGET7_LEFT_EDGE        20
  159. #define TEST_GADGET7_TOP_EDGE        135
  160. #define TEST_GADGET7_WIDTH        100
  161. #define TEST_GADGET7_HEIGHT        9
  162. #define TEST_GADGET7_TEXT        "S_lider gadget"
  163. #define TEST_GADGET7_TEXT_ATTR        &topaz60_attr
  164. #define TEST_GADGET7_MIN        -10
  165. #define TEST_GADGET7_MAX        10
  166. #define TEST_GADGET7_LEVEL        0
  167.  
  168. #define TEST_GADGET8_TYPE        GADGET_DATA_TYPE_SLIDER
  169. #define TEST_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_BELOW)
  170. #define TEST_GADGET8_LEFT_EDGE        390
  171. #define TEST_GADGET8_TOP_EDGE        10
  172. #define TEST_GADGET8_WIDTH        18
  173. #define TEST_GADGET8_HEIGHT        50
  174. #define TEST_GADGET8_TEXT        "Sli_der gadget"
  175. #define TEST_GADGET8_TEXT_ATTR        &topaz60_attr
  176. #define TEST_GADGET8_MIN        -10
  177. #define TEST_GADGET8_MAX        10
  178. #define TEST_GADGET8_LEVEL        (BYTE *)0
  179.  
  180. #define TEST_GADGET9_TYPE        GADGET_DATA_TYPE_SCROLLER
  181. #define TEST_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  182. #define TEST_GADGET9_LEFT_EDGE        (20 + 15 * 10 + 8)
  183. #define TEST_GADGET9_TOP_EDGE        148
  184. #define TEST_GADGET9_WIDTH        100
  185. #define TEST_GADGET9_HEIGHT        0
  186. #define TEST_GADGET9_TEXT        "Scr_oller gadget"
  187. #define TEST_GADGET9_TEXT_ATTR        &topaz60_attr
  188. #define TEST_GADGET9_VISIBLE        4
  189. #define TEST_GADGET9_TOTAL        20
  190. #define TEST_GADGET9_TOP        (BYTE *)10
  191.  
  192. #define TEST_GADGET10_TYPE        GADGET_DATA_TYPE_SCROLLER
  193. #define TEST_GADGET10_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
  194. #define TEST_GADGET10_LEFT_EDGE        490
  195. #define TEST_GADGET10_TOP_EDGE        24
  196. #define TEST_GADGET10_WIDTH        0
  197. #define TEST_GADGET10_HEIGHT        50
  198. #define TEST_GADGET10_TEXT        "Sc_roller gadget"
  199. #define TEST_GADGET10_TEXT_ATTR        &topaz60_attr
  200. #define TEST_GADGET10_VISIBLE        4
  201. #define TEST_GADGET10_TOTAL        20
  202. #define TEST_GADGET10_TOP        (BYTE *)10
  203.  
  204. #define TEST_GADGET11_TYPE        GADGET_DATA_TYPE_CYCLE
  205. #define TEST_GADGET11_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  206. #define TEST_GADGET11_LEFT_EDGE        265
  207. #define TEST_GADGET11_TOP_EDGE        78
  208. #define TEST_GADGET11_WIDTH        160
  209. #define TEST_GADGET11_HEIGHT        15
  210. #define TEST_GADGET11_TEXT        "C_ycle gadget"
  211. #define TEST_GADGET11_TEXT_ATTR        &topaz60_attr
  212. #define TEST_GADGET11_SPACING        1
  213. #define TEST_GADGET11_ACTIVE        2
  214. #define TEST_GADGET11_TEXT_ARRAY    &cycle_array[0]
  215.  
  216. #define TEST_GADGET12_TYPE        GADGET_DATA_TYPE_COUNT
  217. #define TEST_GADGET12_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  218. #define TEST_GADGET12_LEFT_EDGE        325
  219. #define TEST_GADGET12_TOP_EDGE        96
  220. #define TEST_GADGET12_WIDTH        80
  221. #define TEST_GADGET12_HEIGHT        12
  222. #define TEST_GADGET12_TEXT        "Co_unt gadget"
  223. #define TEST_GADGET12_TEXT_ATTR        &topaz80_attr
  224. #define TEST_GADGET12_MIN        100
  225. #define TEST_GADGET12_MAX        1000
  226. #define TEST_GADGET12_VALUE        (BYTE *)600
  227.  
  228. #define TEST_GADGET13_TYPE        GADGET_DATA_TYPE_LISTVIEW
  229. #define TEST_GADGET13_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2 | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED | GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR)
  230. #define TEST_GADGET13_LEFT_EDGE        370
  231. #define TEST_GADGET13_TOP_EDGE        126
  232. #define TEST_GADGET13_WIDTH        104
  233. #define TEST_GADGET13_HEIGHT        35
  234. #define TEST_GADGET13_TEXT        "List _view gadget"
  235. #define TEST_GADGET13_TEXT_ATTR        &topaz60_attr
  236. #define TEST_GADGET13_SPACING        0
  237. #define TEST_GADGET13_TOP        0
  238. #define TEST_GADGET13_LIST        (BYTE *)&test_list
  239.  
  240. #define TEST_GADGET14_TYPE        GADGET_DATA_TYPE_PALETTE
  241. #define TEST_GADGET14_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  242. #define TEST_GADGET14_LEFT_EDGE        220
  243. #define TEST_GADGET14_TOP_EDGE        23
  244. #define TEST_GADGET14_WIDTH        150
  245. #define TEST_GADGET14_HEIGHT        20
  246. #define TEST_GADGET14_TEXT        "_Palette gadget"
  247. #define TEST_GADGET14_TEXT_ATTR        &topaz60_attr
  248. #define TEST_GADGET14_DEPTH        2
  249. #define TEST_GADGET14_COLOR_OFFSET    0
  250. #define TEST_GADGET14_ACTIVE_COLOR    (BYTE *)0
  251.  
  252.     /* Statics for test gadgets */
  253.  
  254. STATIC UWORD image1_data[] = {
  255.     0xffff, 0x8000, 0xbff0, 0xa00c, 0xa00c, 0xbff0, 0x8000, 0x8000,
  256.     0x0000, 0x0001, 0x0005, 0x1ff1, 0x1ff1, 0x0005, 0x0001, 0x7fff
  257. };
  258. STATIC struct Image  image1 = { 0, 0, 16, 8, 2, &image1_data[0], 3, 0, NULL };
  259. STATIC UWORD image2_data[] = {
  260.     0x0000, 0x000f, 0x3fff, 0x23fd, 0x3fcd, 0x7ff1, 0x7001, 0x7fff,
  261.     0xffff, 0x800e, 0x807e, 0x9ff8, 0x9ff0, 0xfe04, 0xf000, 0x8000
  262. };
  263. STATIC struct Image  image2 = { 0, 0, 16, 8, 2, &image2_data[0], 3, 0, NULL };
  264. STATIC BYTE *mx_array[] = {
  265.     "Fast File System", "Old File System", "Custom File System", NULL
  266. };
  267. STATIC BYTE *cycle_array[] = {
  268.     "Amiga", "Workbench", "AmigaDOS", "Multitasking", "CLI", "ARexx",
  269.     "TeX", "Unix", NULL
  270. };
  271. STATIC BYTE *list_array[] = {
  272.     "\001Amiga", "Workbench", "\001AmigaDOS", "Multitasking", "\001CLI",
  273.     "ARexx", "\001TeX", "Unix", NULL
  274. };
  275. STATIC struct List  test_list;
  276. STATIC struct GadgetData  test_gadget_data[] = {
  277.    {
  278.     TEST_GADGET1_TYPE,        /* gd_Type */
  279.     TEST_GADGET1_FLAGS,        /* gd_Flags */
  280.     TEST_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  281.     TEST_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  282.     TEST_GADGET1_WIDTH,        /* gd_Width */
  283.     TEST_GADGET1_HEIGHT,        /* gd_Height */
  284.     TEST_GADGET1_TEXT,        /* *gd_Text */
  285.     TEST_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  286.     { 0, 0, 0 }
  287.    }, {
  288.     TEST_GADGET2_TYPE,        /* gd_Type */
  289.     TEST_GADGET2_FLAGS,        /* gd_Flags */
  290.     TEST_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  291.     TEST_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  292.     TEST_GADGET2_WIDTH,        /* gd_Width */
  293.     TEST_GADGET2_HEIGHT,        /* gd_Height */
  294.     TEST_GADGET2_TEXT,        /* *gd_Text */
  295.     TEST_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  296.     { 0,
  297.     TEST_GADGET2_NORMAL_RENDER,    /* gd_ButtonNormalRender */
  298.     TEST_GADGET2_SELECT_RENDER    /* gd_ButtonSelectRender */
  299.     }
  300.    }, {
  301.     TEST_GADGET3_TYPE,        /* gd_Type */
  302.     TEST_GADGET3_FLAGS,        /* gd_Flags */
  303.     TEST_GADGET3_LEFT_EDGE,        /* gd_LeftEdge */
  304.     TEST_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  305.     TEST_GADGET3_WIDTH,        /* gd_Width */
  306.     TEST_GADGET3_HEIGHT,        /* gd_Height */
  307.     TEST_GADGET3_TEXT,        /* *gd_Text */
  308.     TEST_GADGET3_TEXT_ATTR,        /* *gd_TextAttr */
  309.     {
  310.     TEST_GADGET3_CHECK_STATE,    /* gd_CheckState */
  311.     0, 0 }
  312.    }, {
  313.     TEST_GADGET4_TYPE,        /* gd_Type */
  314.     TEST_GADGET4_FLAGS,        /* gd_Flags */
  315.     TEST_GADGET4_LEFT_EDGE,        /* gd_LeftEdge */
  316.     TEST_GADGET4_TOP_EDGE,        /* gd_TopEdge */
  317.     TEST_GADGET4_WIDTH,        /* gd_Width */
  318.     TEST_GADGET4_HEIGHT,        /* gd_Height */
  319.     TEST_GADGET4_TEXT,        /* *gd_Text */
  320.     TEST_GADGET4_TEXT_ATTR,        /* *gd_TextAttr */
  321.     {
  322.     TEST_GADGET4_SPACING,        /* gd_MXSpacing */
  323.     TEST_GADGET4_ACTIVE,        /* gd_MXActiveEntry */
  324.     TEST_GADGET4_TEXT_ARRAY        /* gd_MXTextArray */
  325.     }
  326.    }, {
  327.     TEST_GADGET5_TYPE,        /* gd_Type */
  328.     TEST_GADGET5_FLAGS,        /* gd_Flags */
  329.     TEST_GADGET5_LEFT_EDGE,        /* gd_LeftEdge */
  330.     TEST_GADGET5_TOP_EDGE,        /* gd_TopEdge */
  331.     TEST_GADGET5_WIDTH,        /* gd_Width */
  332.     TEST_GADGET5_HEIGHT,        /* gd_Height */
  333.     TEST_GADGET5_TEXT,        /* *gd_Text */
  334.     TEST_GADGET5_TEXT_ATTR,        /* *gd_TextAttr */
  335.     {
  336.     TEST_GADGET5_INPUT_LEN,        /* gd_InputLen */
  337.     TEST_GADGET5_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  338.     TEST_GADGET5_INPUT_DEFAULT    /* gd_InputDefault */
  339.     }
  340.    }, {
  341.     TEST_GADGET6_TYPE,        /* gd_Type */
  342.     TEST_GADGET6_FLAGS,        /* gd_Flags */
  343.     TEST_GADGET6_LEFT_EDGE,        /* gd_LeftEdge */
  344.     TEST_GADGET6_TOP_EDGE,        /* gd_TopEdge */
  345.     TEST_GADGET6_WIDTH,        /* gd_Width */
  346.     TEST_GADGET6_HEIGHT,        /* gd_Height */
  347.     TEST_GADGET6_TEXT,        /* *gd_Text */
  348.     TEST_GADGET6_TEXT_ATTR,        /* *gd_TextAttr */
  349.     {
  350.     TEST_GADGET6_INPUT_LEN,        /* gd_InputLen */
  351.     TEST_GADGET6_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  352.     TEST_GADGET6_INPUT_DEFAULT    /* gd_InputDefault */
  353.     }
  354.    }, {
  355.     TEST_GADGET7_TYPE,        /* gd_Type */
  356.     TEST_GADGET7_FLAGS,        /* gd_Flags */
  357.     TEST_GADGET7_LEFT_EDGE,        /* gd_LeftEdge */
  358.     TEST_GADGET7_TOP_EDGE,        /* gd_TopEdge */
  359.     TEST_GADGET7_WIDTH,        /* gd_Width */
  360.     TEST_GADGET7_HEIGHT,        /* gd_Height */
  361.     TEST_GADGET7_TEXT,        /* *gd_Text */
  362.     TEST_GADGET7_TEXT_ATTR,        /* *gd_TextAttr */
  363.     {
  364.     TEST_GADGET7_MIN,        /* gd_SliderMin */
  365.     TEST_GADGET7_MAX,        /* gd_SliderMax */
  366.     TEST_GADGET7_LEVEL        /* gd_SliderLevel */
  367.     }
  368.    }, {
  369.     TEST_GADGET8_TYPE,        /* gd_Type */
  370.     TEST_GADGET8_FLAGS,        /* gd_Flags */
  371.     TEST_GADGET8_LEFT_EDGE,        /* gd_LeftEdge */
  372.     TEST_GADGET8_TOP_EDGE,        /* gd_TopEdge */
  373.     TEST_GADGET8_WIDTH,        /* gd_Width */
  374.     TEST_GADGET8_HEIGHT,        /* gd_Height */
  375.     TEST_GADGET8_TEXT,        /* *gd_Text */
  376.     TEST_GADGET8_TEXT_ATTR,        /* *gd_TextAttr */
  377.     {
  378.     TEST_GADGET8_MIN,        /* gd_SliderMin */
  379.     TEST_GADGET8_MAX,        /* gd_SliderMax */
  380.     TEST_GADGET8_LEVEL        /* gd_SliderLevel */
  381.     }
  382.    }, {
  383.     TEST_GADGET9_TYPE,        /* gd_Type */
  384.     TEST_GADGET9_FLAGS,        /* gd_Flags */
  385.     TEST_GADGET9_LEFT_EDGE,        /* gd_LeftEdge */
  386.     TEST_GADGET9_TOP_EDGE,        /* gd_TopEdge */
  387.     TEST_GADGET9_WIDTH,        /* gd_Width */
  388.     TEST_GADGET9_HEIGHT,        /* gd_Height */
  389.     TEST_GADGET9_TEXT,        /* *gd_Text */
  390.     TEST_GADGET9_TEXT_ATTR,        /* *gd_TextAttr */
  391.     {
  392.     TEST_GADGET9_VISIBLE,        /* gd_ScrollerVisible */
  393.     TEST_GADGET9_TOTAL,        /* gd_ScrollerTotal */
  394.     TEST_GADGET9_TOP        /* gd_ScrollerTop */
  395.     }
  396.    }, {
  397.     TEST_GADGET10_TYPE,        /* gd_Type */
  398.     TEST_GADGET10_FLAGS,        /* gd_Flags */
  399.     TEST_GADGET10_LEFT_EDGE,    /* gd_LeftEdge */
  400.     TEST_GADGET10_TOP_EDGE,        /* gd_TopEdge */
  401.     TEST_GADGET10_WIDTH,        /* gd_Width */
  402.     TEST_GADGET10_HEIGHT,        /* gd_Height */
  403.     TEST_GADGET10_TEXT,        /* *gd_Text */
  404.     TEST_GADGET10_TEXT_ATTR,    /* *gd_TextAttr */
  405.     {
  406.     TEST_GADGET10_VISIBLE,        /* gd_ScrollerVisible */
  407.     TEST_GADGET10_TOTAL,        /* gd_ScrollerTotal */
  408.     TEST_GADGET10_TOP        /* gd_ScrollerTop */
  409.     }
  410.    }, {
  411.     TEST_GADGET11_TYPE,        /* gd_Type */
  412.     TEST_GADGET11_FLAGS,        /* gd_Flags */
  413.     TEST_GADGET11_LEFT_EDGE,    /* gd_LeftEdge */
  414.     TEST_GADGET11_TOP_EDGE,        /* gd_TopEdge */
  415.     TEST_GADGET11_WIDTH,        /* gd_Width */
  416.     TEST_GADGET11_HEIGHT,        /* gd_Height */
  417.     TEST_GADGET11_TEXT,        /* *gd_Text */
  418.     TEST_GADGET11_TEXT_ATTR,    /* *gd_TextAttr */
  419.     {
  420.     TEST_GADGET11_SPACING,        /* gd_CycleSpacing */
  421.     TEST_GADGET11_ACTIVE,        /* gd_CycleActive */
  422.     TEST_GADGET11_TEXT_ARRAY    /* gd_CycleTextArray */
  423.     }
  424.    }, {
  425.     TEST_GADGET12_TYPE,        /* gd_Type */
  426.     TEST_GADGET12_FLAGS,        /* gd_Flags */
  427.     TEST_GADGET12_LEFT_EDGE,    /* gd_LeftEdge */
  428.     TEST_GADGET12_TOP_EDGE,        /* gd_TopEdge */
  429.     TEST_GADGET12_WIDTH,        /* gd_Width */
  430.     TEST_GADGET12_HEIGHT,        /* gd_Height */
  431.     TEST_GADGET12_TEXT,        /* *gd_Text */
  432.     TEST_GADGET12_TEXT_ATTR,    /* *gd_TextAttr */
  433.     {
  434.     TEST_GADGET12_MIN,        /* gd_CountMin */
  435.     TEST_GADGET12_MAX,        /* gd_CountMax */
  436.     TEST_GADGET12_VALUE        /* gd_CountValue */
  437.     }
  438.    }, {
  439.     TEST_GADGET13_TYPE,        /* gd_Type */
  440.     TEST_GADGET13_FLAGS,        /* gd_Flags */
  441.     TEST_GADGET13_LEFT_EDGE,    /* gd_LeftEdge */
  442.     TEST_GADGET13_TOP_EDGE,        /* gd_TopEdge */
  443.     TEST_GADGET13_WIDTH,        /* gd_Width */
  444.     TEST_GADGET13_HEIGHT,        /* gd_Height */
  445.     TEST_GADGET13_TEXT,        /* *gd_Text */
  446.     TEST_GADGET13_TEXT_ATTR,    /* *gd_TextAttr */
  447.     {
  448.     TEST_GADGET13_SPACING,        /* gd_ListViewSpacing */
  449.     TEST_GADGET13_TOP,        /* gd_ListViewTop */
  450.     TEST_GADGET13_LIST        /* gd_ListViewList */
  451.     }
  452.    }, {
  453.     TEST_GADGET14_TYPE,        /* gd_Type */
  454.     TEST_GADGET14_FLAGS,        /* gd_Flags */
  455.     TEST_GADGET14_LEFT_EDGE,    /* gd_LeftEdge */
  456.     TEST_GADGET14_TOP_EDGE,        /* gd_TopEdge */
  457.     TEST_GADGET14_WIDTH,        /* gd_Width */
  458.     TEST_GADGET14_HEIGHT,        /* gd_Height */
  459.     TEST_GADGET14_TEXT,        /* *gd_Text */
  460.     TEST_GADGET14_TEXT_ATTR,    /* *gd_TextAttr */
  461.     {
  462.     TEST_GADGET14_DEPTH,        /* gd_PaletteDepth */
  463.     TEST_GADGET14_COLOR_OFFSET,    /* gd_PaletteColorOffset */
  464.     TEST_GADGET14_ACTIVE_COLOR    /* gd_PaletteActiveColor */
  465.     }
  466.    }, {
  467.     INTUISUP_DATA_END        /* end of gadget data array */
  468.    }
  469. };
  470.     /* Prototypes */
  471.  
  472. VOID test_action(struct RenderInfo  *ri, struct Window  *win,
  473.                             struct GadgetList  *gl);
  474. BOOL build_test_list(VOID);
  475. VOID free_test_list(VOID);
  476.  
  477.     /* Gadgets test */
  478.  
  479.    LONG
  480. main(VOID)
  481. {
  482.    struct IOStdReq    io;
  483.    struct RenderInfo  *ri;
  484.    struct Window      *win;
  485.    struct GadgetList  *gl;
  486.  
  487.    MWInit((BPTR)NULL, 0L);
  488.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  489.       if (GfxBase = OpenLibrary("graphics.library", 0L)) {
  490.      if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
  491.         if (LayersBase = OpenLibrary("layers.library", 0L)) {
  492.            if (!OpenDevice("console.device", -1L,
  493.                          (struct IORequest *)&io, 0L)) {
  494.           ConsoleDevice = io.io_Device;
  495.           if (build_test_list() == TRUE) {
  496.              if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
  497.                 if (win = open_window(ri, &test_new_window,
  498.                                OPEN_WINDOW_FLAGS)) {
  499.                test_gadget_data[TEST_GADGET_BUTTON_IMAGE].gd_SpecialData.gd_ButtonData.gd_ButtonNormalRender = &image1;
  500.                if (gl = create_gadgets(ri, &test_gadget_data[0], 0,
  501.                                  0, NULL)) {
  502.                   display_gadgets(win, gl);
  503.                   test_action(ri, win, gl);
  504.                   remove_gadgets(gl);
  505.                   free_gadgets(gl);
  506.                }
  507.                close_window(win, FALSE);
  508.             }
  509.             free_render_info(ri);
  510.              }
  511.              free_test_list();
  512.           }
  513.           CloseDevice((struct IORequest *)&io);
  514.            }
  515.            CloseLibrary(LayersBase);
  516.         }
  517.         CloseLibrary(DiskfontBase);
  518.      }
  519.      CloseLibrary(GfxBase);
  520.       }
  521.       CloseLibrary(IntuitionBase);
  522.    }
  523.    MWTerm();
  524.    return(0L);
  525. }
  526.     /* Perform IDCMP action */
  527.  
  528.    VOID
  529. test_action(struct RenderInfo  *ri, struct Window  *win,
  530.                              struct GadgetList  *gl)
  531. {
  532.    struct MsgPort  *up = win->UserPort;
  533.    BOOL busy = TRUE, input = TRUE, keepon = TRUE;
  534.  
  535.    /* Waiting for close window event */
  536.    do {
  537.       struct IntuiMessage  *msg;
  538.  
  539.       WaitPort(up);
  540.       while (msg = get_msg(up)) {
  541.      BYTE *format, buffer[80];
  542.  
  543.      switch (msg->Class) {
  544.         case CLOSEWINDOW :
  545.            keepon = FALSE;
  546.            break;
  547.  
  548.         case MOUSEBUTTONS:
  549.            if (msg->Code == MENUUP) {
  550.  
  551.           /* Turn on/off busy mouse pointer */
  552.           if (busy == TRUE) {
  553.              change_mouse_pointer(win, NULL, TRUE);
  554.              busy = FALSE;
  555.           } else {
  556.              restore_mouse_pointer(win);
  557.              busy = TRUE;
  558.           }
  559.            }
  560.            break;
  561.  
  562.         case ISUP_ID :
  563.            clear_window(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  564.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  565.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  566.            if (msg->Code == TEST_GADGET_STRING) {
  567.           format = MESSAGE_TEXT1;
  568.            } else {
  569.           format = MESSAGE_TEXT2;
  570.            }
  571.            sprintf(&buffer[0], format, msg->Code, msg->IAddress);
  572.            print_text(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  573.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  574.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  575.            /* Change gadgets */
  576.            switch (msg->Code) {
  577.           case TEST_GADGET_CHECK :
  578.              if (msg->IAddress) {
  579.             set_gadget_attributes(gl, TEST_GADGET_LISTVIEW,
  580.                           GADGET_DATA_FLAG_DISABLED, 0L,
  581.                 USE_CURRENT_VALUE, (ULONG)TEST_GADGET13_TOP,
  582.                         (VOID *)TEST_GADGET13_LIST);
  583.              } else {
  584.             set_gadget_attributes(gl, TEST_GADGET_LISTVIEW,
  585.                           GADGET_DATA_FLAG_DISABLED,
  586.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  587.                        USE_CURRENT_VALUE, (VOID *)NULL);
  588.              }
  589.              break;
  590.  
  591.           case TEST_GADGET_BUTTON :
  592.              if (input == FALSE) {
  593.             set_gadget_attributes(gl, TEST_GADGET_INTEGER,
  594.                GADGET_DATA_FLAG_DISABLED, 0L, USE_CURRENT_VALUE,
  595.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  596.             input = TRUE;
  597.              } else {
  598.             set_gadget_attributes(gl, TEST_GADGET_INTEGER,
  599.                           GADGET_DATA_FLAG_DISABLED,
  600.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  601.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  602.             input = FALSE;
  603.              }
  604.              break;
  605.            }
  606.            break;
  607.      }
  608.      reply_msg(msg);
  609.       }
  610.    } while (keepon == TRUE);
  611.  
  612.    /* IF busy then restore mouse pointer */
  613.    if (busy == FALSE) {
  614.       restore_mouse_pointer(win);
  615.    }
  616. }
  617.     /* Build test list */
  618.  
  619.    BOOL
  620. build_test_list(VOID)
  621. {
  622.    struct List  *list = &test_list;
  623.    BYTE **text = &list_array[0];
  624.    BOOL success = TRUE;
  625.  
  626.    NewList(list);
  627.    while (*text) {
  628.       struct Node  *node;
  629.  
  630.       if (node = AllocMem((LONG)sizeof(struct Node), (LONG)MEMF_PUBLIC |
  631.                                   MEMF_CLEAR)) {
  632.      node->ln_Name = *text++;
  633.      AddTail(list, node);
  634.       } else {
  635.      free_test_list();
  636.      success = FALSE;
  637.      break;
  638.       }
  639.    }
  640.    return(success);
  641. }
  642.     /* Free test list */
  643.  
  644.    VOID
  645. free_test_list(VOID)
  646. {
  647.    struct List  *list = &test_list;
  648.    struct Node  *node;
  649.  
  650.    while (node = RemHead(list)) {
  651.       FreeMem(node, (LONG)sizeof(struct Node));
  652.    }
  653. }
  654.